package com.wolfalpha.lwtool.db;

import java.util.ArrayList;
import java.util.List;

import com.wolfalpha.lwtool.vo.DB;
import com.wolfalpha.lwtool.vo.FFListJob;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

/**
 * 数据库管理DAO
 * 
 * @author ttStudio
 * 
 */
public class DBDao {

	private DBHelper helper = null;
	private SQLiteDatabase db;

	public DBDao(Context cxt) {
		helper = new DBHelper(cxt);
		db = helper.getWritableDatabase();
	}

//	/**
//	 */
//	public void addJob(List<DB> dbs) {
//		// 采用事务处理，确保数据完整性
//		db.beginTransaction(); // 开始事务
//		try {
//			for (DB job : dbs) {
//				db.execSQL(
//						"INSERT INTO "
//								+ DBHelper.JOBTABLE_NAME
//								+ " (job_id, job_title,job_date, job_time) VALUES(?, ?, ?, ?)",
//						new Object[] { job.getId(),
//								String.valueOf(job.getTitle()),
//								String.valueOf(job.getMdate()),
//								String.valueOf(job.getTime()) });
//				// 带两个参数的execSQL()方法，采用占位符参数？，把参数值放在后面，顺序对应
//				// 一个参数的execSQL()方法中，用户输入特殊字符时需要转义
//				// 使用占位符有效区分了这种情况
//			}
//			db.setTransactionSuccessful(); // 设置事务成功完成
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			db.endTransaction(); // 结束事务
//		}
//	}

	/**
	 * 存放单个
	 * @param dbe
	 */
	public void addSingleDB(DB dbe) {
		// 采用事务处理，确保数据完整性
		db.beginTransaction(); // 开始事务
		try {
			db.execSQL("INSERT INTO " + DBHelper.JOBTABLE_NAME
					+ " (job_id, job_title, job_date, job_time) VALUES(?, ?, ?, ?)",
					new Object[] { dbe.getId(), dbe.getTitle(), dbe.getMdate(), dbe.getTime() });
			// 带两个参数的execSQL()方法，采用占位符参数？，把参数值放在后面，顺序对应
			// 一个参数的execSQL()方法中，用户输入特殊字符时需要转义
			// 使用占位符有效区分了这种情况
			db.setTransactionSuccessful(); // 设置事务成功完成
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			db.endTransaction(); // 结束事务
		}
	}

	/**
	 * query all jobs, return list 查询所有数据
	 * 
	 * @return List<Job>
	 */
	public List<DB> query() {
		ArrayList<DB> dbs = new ArrayList<DB>();
		Cursor c = queryTheCursor();
		while (c.moveToNext()) {
			DB db = new DB();
			db.setId(c.getInt(c.getColumnIndex("job_id")));
			db.setTitle(c.getString(c.getColumnIndex("job_title")));
			db.setTime(c.getString(c.getColumnIndex("job_time")));
			db.setMdate(c.getString(c.getColumnIndex("job_date")));
			dbs.add(db);
		}
		c.close();
		return dbs;
	}

	/**
	 * 
	 * 删除记录
	 * 
	 * @param Job
	 */
	public void deleteOldPerson(FFListJob job) {
		db.delete(DBHelper.JOBTABLE_NAME, "job_time = ?", new String[] { String
				.valueOf(String.valueOf(job.getPublishDate())) });
	}

	/**
	 * query all persons, return cursor
	 * 
	 * @return Cursor
	 */
	public Cursor queryTheCursor() {
		Cursor c = db.rawQuery("SELECT * FROM " + DBHelper.JOBTABLE_NAME, null);
		return c;
	}

	/**
	 * close database
	 */
	public void closeDB() {
		// 释放数据库资源
		db.close();
	}

}
